// pages/cart/index.js

import {getSetting,chooseAddress,openSetting,showModal,showToast} from "../../utils/asyncWx.js"

import regeneratorRuntime from '../../lib/runtime/runtime'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    address: {},
    cart: [
      {
        goods_id: 22314,
        cat_id: 13,
        goods_name:"婚纱摄影",
        goods_price: 6097,
        goods__number: 106,
        goods_weight: 100,
        goods_big_logo: "http://image3.suning.cn/uimg/b2c/newcatentries/0080080-00008800609712632_1_800x80.jpg",
        goods_small_logo: "http://image3.suning.cn/uimg/b2c/newcatentries/0000000000-000000000609712632_1_400x400.jpg",
        num:1
      },
      {
        goods_id: 22315,
        cat_id: 14,
        goods_name:"婚纱摄影",
        goods_price: 6097,
        goods__number: 106,
        goods_weight: 100,
        goods_big_logo: "http://image3.suning.cn/uimg/b2c/newcatentries/0080080-00008800609712632_1_800x80.jpg",
        goods_small_logo: "http://image3.suning.cn/uimg/b2c/newcatentries/0000000000-000000000609712632_1_400x400.jpg",
        num:1
      }
    ],
    allChecked: false,
    totalPrice: 0,
    totalNum:0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  // onShow() {
  //   // 1、获取本地储存中的地址数据
  //   const address = wx.getStorageSync("address");

  //   // 获取缓存中的数据
  //   const cart = wx.getStorageSync("cart") || [];
  //   this.setData({
  //     address
  //   })
  //   this.setCart(cart)
  // },

  // 获取用户收货地址功能
  // 1、绑定点击事件
  // 2、调用小程序内置api
  /** 
  2、页面加载完毕
  0、onload onshow事件
  1\获取缓存中的购物车数组
  2、把购物车数据填充到data中
  6\商品的选中功能
    1绑定change事件
2获取到被修改的商品对象
3商品对象的选中状态取反
4重新填充回data中和缓存中
5重新计算全选。总价格总数量。。。

  **/
  
  // 点击结算
  // 1、判断有没有收货地址信息
  // 2、判断商品有没有选中
  // 3、经过以上验证 ，跳转到支付页面！
  
  handleItemChange(e) {
    // 1、获取被修改个商品id
    const goods_id = e.currentTarget.dataset.id;
    // console.log(goods_id)
    // 2\获取购物车数组
    let { cart } = this.data;
    //3、找到被修改的商品对象
    let index = cart.findIndex(v => v.goods_id === goods_id);
    //4、选中状态取反
    cart[index].checked = !cart[index].checked;
    //5 ,6把购物车数据重新设置回data中和缓存中
    this.setCart(cart)
  },



  handleItemAllCheck() {
    //1\获取数据
    let { cart, allChecked } = this.data;
    //2、修改值
    allChecked = !allChecked;
    //循环修改cart数组 中的商品选中的状态
    cart.forEach(v => v.checked = allChecked);
    //修改后的值填回
    this.setCart(cart);
  },


  async handleItemNumEdit(e) {
    const { operation, id } = e.currentTarget.dataset;
    console.log(e.currentTarget.dataset)
    let { cart } = this.data;
    const index = cart.findIndex(v => v.goods_id === id);
    if (cart[index].num  ===1 && operation === -1) {
      // cart[index].num = 1
      const res = await showModal({ content: "你是否删除？" });
      console.log(res);
      if (res.confirm) {
        cart.splice(index, 1);
        this.setCart(cart);
      }
    } else {
      cart[index].num += operation;
      this.setCart(cart);
    }
    console.log(operation, id);


  },
  async handlePay() {
    //1判断收货地址
    const { totalNum } = this.data;
    if (totalNum === 0) {
      await showToast({ title: "您还未选中要支付的商品" });
      return;
    }

    wx.navigateTo({
      url: '/pages/pay/index'
    });


  },


  //封装函数
  setCart(cart) {
    let allChecked = true;
    let totalPrice = 0;
    let totalNum = 0;
    cart.forEach(v => {
      if (v.checked) {
        // console.log(v);
        totalPrice += ((v.num) * (v.goods_price));
        totalNum += v.num;
      } else {
        allChecked = false;
      }
    });
    //判断数组是否为空
    allChecked = cart.length != 0 ? allChecked : false;
    this.setData({
      cart,
      totalNum,
      totalPrice,
      allChecked
    });
    wx.setStorageSync("cart", cart);
  }
})